import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Mundo del juego, donde se crean todos los niveles, se actualiza el score, 
 * deonde se desarrolla todo el juego
 * @autor Irma Delgado
 * @versión nov/2014
 */
public class MundoBob extends World
{
    /**Variable de instancia del mundo*/
    private int score;
    private Bob jugador;
    private int scroll;
    private int bobPosX; 
    private int bobPosY;
    private int posPared;
    private int posPlanta;  
    private int vidas;
    private int llaves;
    private int nivel;
    private boolean flecha;
    private Counter mensajeVidas;
    private Counter mensajeLlaves;
    private Counter mensajeNivel;
    private Counter mensajeScore;
    
    
    
    private GreenfootSound musica;
    //   private GreenfootImage imag= new GreenfootImage("CounterVi.png");

    /**
     * Constructor para objetos de clase MundoBob.
     * 
     */
    public MundoBob()
    {    
        
        super(800, 600, 1); 
        jugador= new Bob();
        setPaintOrder(Letrero.class,Bob.class,Bomba.class,VidaExtra.class,Llave.class,Planta.class,Planta3.class,/*Llave.class,*/Counter.class,Pared.class, Planta1.class,Globo.class,Llave.class,Enemigo.class,Estrella.class);
        posPared = 32;
        posPlanta=32;
        vidas=3;
        llaves=0;
        nivel=1;
        scroll=0;
        score=0;
        musica = new GreenfootSound ("Fondo.mp3");
        //preparaNivel_22();
        //preparaNivel2();
       // preparaNivel3();
        creaMenu();
        mensajeVidas= new Counter("    ");
        mensajeVidas.setValue(vidas);
        
        mensajeLlaves= new Counter("    ");
        mensajeLlaves.setValue(llaves);
        
        
        mensajeScore= new Counter("Score ");
        mensajeScore.setValue(score);
        
        
        mensajeNivel= new Counter("Nivel ");
        mensajeNivel.setValue(nivel);
        
       }
       /**Pone play a la musica de fondo*/
    public void started()
    {
      super.started();
      musica.playLoop();
    }
    
       /**Pone en pause la musica*/
    public void stopped()
    {
      super.stopped();
      musica.pause();
    }
    
       /**Obteter la posicion del jugador*/
    public int getBobPosX()
    {
        return bobPosX;
    }
    
    public int getBobPosY()
    {
        return bobPosY;
    }
    
       /**Obtener el nivel del juego*/
    public int getNivel()
    {
        return nivel;
    }
    
       /**Actualizar el nivel*/
    public void setNivel(int nuevoNivel)
    {
        nivel=nuevoNivel;
    }
    /**Crea el menu del juego*/
    public void creaMenu()
    {
        
        vidas=3;
        llaves=0;
        nivel=1;
        scroll=0;
        //musica.play();
        removeObjects(getObjects(Actor.class));
        setBackground("Menu.png");
        addObject(new Jugar(),128,550);
        addObject(new Ayuda(),320,550);
        addObject(new Creditos(),511,550);
        addObject(new Records(),699,550);
    }
    
    
    
    
    /**Metodo para mostrar los records*/
        public void creaRecords()
    {
     
        
        
        
         removeObjects(getObjects(null));
         setBackground("Nivel3.png");
         this.records();
         addObject(new ScoreBoard(720,300),getWidth()/2,(getHeight()/2));
        
        
    }        
        
    /**Metodo para records*/
        public void records()
    {
        removeObjects( getObjects(Actor.class) );
        java.util.List records=UserInfo.getTop(5);
        UserInfo info=UserInfo.getMyInfo();
        int y=50;
        Letrero nombre=new Letrero(info.getUserName());
        String cad=""+info.getScore();

        Letrero nivel=new Letrero(cad);
        addObject(new Atras(),700,500);
        Letrero let=new Letrero  ("RECORDS");
        addObject(let,350,30);    

        if(records!=null)
        {
            for(int i=0; i<records.size(); i++)
            {
                info=(UserInfo)records.get(i);
                addObject(nombre,110+(nombre.getImage().getWidth()/2),y);
                addObject(nivel,480+(nivel.getImage().getWidth()/2),y);
                y+=50;
            }
        }
        else
        {
            Letrero letrero;
            letrero=new Letrero("RECORDS   HO");
            this.addObject(letrero,300,50);
        }
    }
    
    /**Metodo para crear la ayuda*/
    public void creaAyuda()
    {
     
        removeObjects( getObjects(Actor.class) );
        setBackground("Ayuda2.png");
        addObject(new Jugar(),699, 550);
    
    }
    
    /**Metodo para visualizar que el jugador perdio/gano*/
        public void pierde()
        {
            removeObjects( getObjects(Actor.class) );
        
               Letrero lose;
               lose=new Letrero("Perdiste");
               //addObject(lose,350,280);
               setBackground("Perder.png");
               //musica.stop();
               Greenfoot.delay(100);
               creaMenu();
               //creaRecords();
               
            
        }
        
        
        public void gana()
        {
            removeObjects( getObjects(Actor.class) );
          
            Letrero lose;
               lose=new Letrero("Ganaste");
               //addObject(lose,350,280);
               setBackground("Ganar.png");

               Greenfoot.delay(200);
              //musica.stop();
              creaMenu();
              //creaRecords();  
        }
        
    /**Metodo para crear los creditos*/
     public void creaCreditos()
    {
     
        removeObjects( getObjects(Actor.class) );
        setBackground("Creditos2.png");
        Greenfoot.delay(300);
        creaMenu();
    }
   
    /**Metodo para cambiar el score del jugador*/
    public void setScore(int newScore)
    {
        score+=newScore;
    }
    
    /**Metodo para obtener el score*/
    public int getScore()
    {
        return score;
    }
    
    /**Metodo para modificar las vidas*/
    public void setVidas(int newLife)
    {
        vidas=vidas+newLife;
    }
    
    /**Metodo para actualizar el numero de llaves*/
      public void setLlaves(int newLlave)
    {
        llaves=llaves+newLlave;
    }
    
    /**Metodo para obtener las llaves*/
    public int getLlaves()
    {
        return llaves;
    }

    
    /**Actua del mundo*/
    public void act()
    {
        //if(scroll==1);
        if(llaves==15)
        this.gana();
        mensajeLlaves.setValue(llaves);
        mensajeScore.setValue(score);
        mensajeVidas.setValue(vidas);
        mensajeNivel.setValue(nivel);
    }

    /**Metodo para obtener al jugador*/
    public Bob getBob()
    {
        return jugador;
    }

    /**Metodo para obtener las vidas*/
    public int getVidas()
    {
        return vidas;
    }
    
    /**Metodo para obtener el scroll*/
    public int getScroll()
    {
        return scroll;
    }
    
    /**Metodos para dibujar los difernetes niveles del juego*/
    public void preparaNivel1()
    {
        if(scroll==0)
        {
        // musica.play();
        
        
        int posX=Greenfoot.getRandomNumber(798);
        int posY=Greenfoot.getRandomNumber(598);
        int posX1=Greenfoot.getRandomNumber(600);
        int posY1=Greenfoot.getRandomNumber(500);
        int posX2=Greenfoot.getRandomNumber(500);
        int posY2=Greenfoot.getRandomNumber(400);

        int limRow= getWidth()/32;
        int limCol=getHeight()/32;
        
        int ran=Greenfoot.getRandomNumber(3);
        int ran1=Greenfoot.getRandomNumber(3);
        int ran2=Greenfoot.getRandomNumber(3);
        
        removeObjects(getObjects(null));
     
        addObject(mensajeNivel, 271,16);
        addObject(new Llave(), 161,16);
        addObject(mensajeLlaves, 181,16);
        
        addObject(new VidaExtra(), 58,16);
        
        addObject(mensajeScore, 400,16);
        addObject(mensajeVidas, 81,16);
        
        
        setBackground("Nivel1.png");
        //Poscicion inicial del jugador
        bobPosX = 52;//jugador.getImage().getWidth();//50
        bobPosY = 540;//getHeight()-jugador.getImage().getHeight();//540

        addObject(jugador, bobPosX,bobPosY);

        //agrega todos los objetos al escenario
        //Crea paredes superior inferior e izquierda
        for(int i=0; i < limRow; i++)
            addObject(new Pared(),16+(i*posPared) ,582);

        for(int i=0; i < limRow; i++)
            addObject(new Pared(),16+(i*posPared) ,16);

        for(int i=0; i < limCol; i++)
            addObject(new Pared(),16 ,16+(i*posPared));

        int limRowPlants=750/32;
        int limColPlants=500/32;
        //Crea laberinto renglones
        for(int i=0; i < limRowPlants; i++)
            addObject(new Planta(),82+(i*posPlanta) ,500);

        for(int i=0; i < limRowPlants; i++)
            addObject(new Planta1(),82+(i*posPared) ,100);

        for(int i=0; i < limRowPlants; i++)
            addObject(new Planta3(),82+(i*posPared) ,418);

        for(int i=0; i < limRowPlants; i++)
            addObject(new Planta1(),82+(i*posPared) ,260);

        for(int i=0; i < limRowPlants; i++)
            addObject(new Planta(),82+(i*posPared) ,175);

        for(int i=0; i < limRowPlants/2; i++)
            addObject(new Planta(),114+(i*posPared),338);

        for(int i=0; i < limRowPlants/2; i++)
            addObject(new Planta1(),464+(i*posPared),338);

        //crea laberinto columnas
        for(int i=0; i < limColPlants; i++)
            addObject(new Planta(),82 ,50+(i*posPared));

        for(int i=0; i < limColPlants-1; i++)
            addObject(new Planta(),82*4 ,132+(i*posPared));

        for(int i=0; i < limColPlants/2; i++)
            addObject(new Planta3(),82*2 ,132+(i*posPared));

        for(int i=0; i < limColPlants/2; i++)
            addObject(new Planta1(),82*3 ,207+(i*posPared));

        for(int i=0; i < limColPlants/2; i++)
            addObject(new Planta3(),82*6 ,50+(i*posPared));

        for(int i=0; i < limColPlants/2; i++)
            addObject(new Planta3(),82*6 ,360+(i*posPared));

        for(int i=0; i < limColPlants/3; i++)
            addObject(new Planta1(),82*8 ,338+(i*posPared));

        for(int i=0; i < limColPlants/3; i++)
            addObject(new Planta3(),82*9 ,418+(i*posPared));

        //creacion de bonus

        addObject(new VidaExtra(),123,216);
        addObject(new Estrella(),318,164);
        addObject(new SuperBomba(),82,50);
        addObject(new VidaExtra(),656,370);
        addObject(new Escudo(),401,537);
        addObject(new Estrella(),363,301);
        addObject(new SuperBomba(),633,63);
        addObject(new SuperBomba(),123,500);
        //crear enemigos
        addObject(new Barril(),241,463);
        addObject(new Barril(), 305, 66);
        addObject(new Barril(), 591, 304);
        addObject(new Barril(), 50, 56);
        addObject(new Barril(), 698, 59);
        addObject(new Barril(),410,135);
        //crear llaves
        
        
        
        
        
                switch(ran)
                {
                    case 0:
                    {
                        addObject(new Llave(),410,135);
                        break;
                    }
                    case 1:
                    {
                        addObject(new Llave(), 498, 338);
                        break;
                    }
                    case 2:
                    {
                        addObject(new Llave(), 598, 457);
                        break;
                    }
                }
                
                switch(ran1)
                {
                    
                    case 0:
                    
                        addObject(new Llave(),110,550);
                        break;
                    case 1:
                    
                        addObject(new Llave(), 360, 250);
                        break;
                    case 2:
                    
                        addObject(new Llave(), 90, 328);
                        break;
                }
                
                switch(ran2)
                {
                    
                    case 0:
                    
                    
                        addObject(new Llave(),600,50);
                        break;
                    case 1:
                   
                    
                        addObject(new Llave(), 200, 500);
                        break;
                    case 2:
                    
                    
                        addObject(new Llave(), 550, 400);
                        break;
                }
            }
      
    }
    public void preparaNivel_12()
    {
        //if(scroll==2){
       removeObjects(getObjects(null));
        //if(scroll==0)
        //{
        int posX=Greenfoot.getRandomNumber(798);
        int posY=Greenfoot.getRandomNumber(598);
        int posX1=Greenfoot.getRandomNumber(600);
        int posY1=Greenfoot.getRandomNumber(500);
        int posX2=Greenfoot.getRandomNumber(500);
        int posY2=Greenfoot.getRandomNumber(400);

        int limRow= getWidth()/32;
        int limCol=getHeight()/32;

        
        mensajeVidas= new Counter("    ");
        mensajeVidas.setValue(vidas);
        addObject(new VidaExtra(), 58,16);
        addObject(mensajeVidas, 78,16);
        
        mensajeLlaves= new Counter("    ");
        mensajeLlaves.setValue(llaves);
        addObject(new Llave(), 161,16);
        addObject(mensajeLlaves, 181,16);
        
         mensajeNivel= new Counter("Nivel ");
        mensajeNivel.setValue(nivel);
        addObject(mensajeNivel, 271,16);
        addObject(mensajeScore, 400,16);
        
        
        setBackground("Nivel1.png");
        //Poscicion inicial del jugador
        bobPosX = 52;//jugador.getImage().getWidth();//50
        bobPosY = 540;//getHeight()-jugador.getImage().getHeight();//540

        addObject(jugador, bobPosX,bobPosY);

        //agrega todos los objetos al escenario
        //Crea paredes superior inferior e izquierda
        for(int i=0; i < limRow; i++)
            addObject(new Pared(),16+(i*posPared) ,582);

        for(int i=0; i < limRow; i++)
            addObject(new Pared(),16+(i*posPared) ,16);

        for(int i=0; i < limCol; i++)
            addObject(new Pared(),784 ,16+(i*posPared));

        int limRowPlants=750/32;
        int limColPlants=500/32;
        //Crea laberinto renglones
        for(int i=0; i < limRowPlants; i++)
            addObject(new Planta(),18*2+(i*posPlanta) ,500);
            
        for(int i=0; i < limRowPlants; i++)
            addObject(new Planta(),18*2+(i*posPlanta) ,42*8);
            
        for(int i=0; i < limRowPlants; i++)
            addObject(new Planta(),18*2+(i*posPlanta) ,42*3);
            
        for(int i=0; i < limRowPlants/2; i++)
            addObject(new Planta(),18*2+(i*posPlanta) ,42*10);
            
        for(int i=0; i < limRowPlants/2; i++)
            addObject(new Planta(),18*10+(i*posPlanta) ,42*5);
        
          for(int i=0; i < limRowPlants/3; i++)
            addObject(new Planta1(),18*29+(i*posPlanta) ,42*10);
            
          for(int i=0; i < limRowPlants/3; i++)
            addObject(new Planta1(),504+(i*posPlanta) ,266);
            //crea laberinto columnas
        for(int i=0; i < limColPlants; i++)
            addObject(new Planta(),30/2,42+(i*posPared));
            
        for(int i=0; i < limColPlants/3; i++)
            addObject(new Planta(),420,336+(i*posPared));
            
        for(int i=0; i < limColPlants; i++)
            addObject(new Planta1(),42*4,42+(i*posPared));
            
        for(int i=0; i < limColPlants; i++)
            addObject(new Planta3(),42*8,42+(i*posPared));
        
        for(int i=0; i < limColPlants; i++)
            addObject(new Planta3(),42*12,42+(i*posPared));
            
        for(int i=0; i < limColPlants; i++)
            addObject(new Planta3(),42*17,42+(i*posPared));
            
        for(int i=0; i < limColPlants/2; i++)
            addObject(new Planta3(),42*6,42*3+(i*posPared));
        
        for(int i=0; i < limColPlants/2; i++)
            addObject(new Planta3(),42*2,42*3+(i*posPared));
 
        //creacion de bonus

        addObject(new VidaExtra(),123,216);
        addObject(new Estrella(),291,169);
        addObject(new SuperBomba(),82,50);
        addObject(new VidaExtra(),656,370);
        addObject(new Escudo(),401,537);
        addObject(new Escudo(),500,300);
        addObject(new Estrella(),88,382);
        addObject(new SuperBomba(),633,63);
        addObject(new SuperBomba(),123,500);
        //crear enemigos
        addObject(new Barril(),372,169);
        addObject(new Barril(), 209, 67);
        addObject(new Barril(), 591, 304);
        addObject(new Barril(), 529, 537);
        addObject(new Barril(), 241, 379);
        addObject(new Barril(), 569, 67);
        addObject(new Globo(), 125, 296);
        addObject(new Globo(),49,164);
        addObject(new Globo(), 747, 166);
        addObject(new Globo(),462,375);
        
        //crear llaves
        
        
        
        int ran=Greenfoot.getRandomNumber(3);
        int ran1=Greenfoot.getRandomNumber(3);
        int ran2=Greenfoot.getRandomNumber(3);
        
        
                switch(ran)
                {
                    case 1:
                        addObject(new Llave(),510,235);
                        break;
                    case 2:
                        addObject(new Llave(), 398, 238);
                        break;
                    case 0:
                        addObject(new Llave(), 598, 550);
                        break;
                }
                
                switch(ran1)
                {
                    case 1:
                        addObject(new Llave(),210,550);
                        break;
                    case 2:
                        addObject(new Llave(), 460, 350);
                        break;
                    case 0:
                        addObject(new Llave(), 190, 428);
                        break;
                }
                
                switch(ran2)
                {
                    case 1:
                        addObject(new Llave(),419,76);
                        break;
                    case 2:
                        addObject(new Llave(), 84, 126);
                        break;
                    case 0:
                        addObject(new Llave(), 294, 293);
                        break;
                }
        
        
       //}
   }
     public void preparaNivel2()
    {
        //if(scroll==3){
        removeObjects(getObjects(null));
        //musica.play();
          
        //if(scroll==0)
        //{
        int x=Greenfoot.getRandomNumber(798);
        int y=Greenfoot.getRandomNumber(598);
        int x1=Greenfoot.getRandomNumber(600);
        int y1=Greenfoot.getRandomNumber(500);
        int x2=Greenfoot.getRandomNumber(500);
        int y2=Greenfoot.getRandomNumber(400);
        int x3=Greenfoot.getRandomNumber(798);
        int y3=Greenfoot.getRandomNumber(598);
        int x4=Greenfoot.getRandomNumber(600);
        int y4=Greenfoot.getRandomNumber(500);
        int x5=Greenfoot.getRandomNumber(500);
        int y5=Greenfoot.getRandomNumber(400);

        
        
        int limRow= getWidth()/32;
        int limCol=getHeight()/32;
         
        mensajeVidas= new Counter("    ");
        mensajeVidas.setValue(vidas);
        addObject(new VidaExtra(), 58,16);
        addObject(mensajeVidas, 78,16);
        
        mensajeLlaves= new Counter("    ");
        mensajeLlaves.setValue(llaves);
        addObject(new Llave(), 161,16);
        addObject(mensajeLlaves, 181,16);
        
         mensajeNivel= new Counter("Nivel ");
        mensajeNivel.setValue(nivel);
        addObject(mensajeNivel, 271,16);
        addObject(mensajeScore, 400,16);
         
        setBackground("Nivel2.png");
        //Poscicion inicial del jugador
        bobPosX = 52;//jugador.getImage().getWidth();//50
        bobPosY = 540;//getHeight()-jugador.getImage().getHeight();//540

        addObject(jugador, bobPosX,bobPosY);
        
        
        //agrega todos los objetos al escenario
         //Crea paredes superior inferior e izquierda
        for(int i=0; i < limRow; i++)
            addObject(new Pared(),16+(i*posPared) ,582);

        for(int i=0; i < limRow; i++)
            addObject(new Pared(),16+(i*posPared) ,16);

        for(int i=0; i < limCol; i++)
            addObject(new Pared(),16 ,16+(i*posPared));
            
        
        int limRowPlants=750/32;
        int limColPlants=500/32;
        int posX=42/2;
        int posY=32/2;
        //Crea laberinto renglones
        for(int i=0; i < limRowPlants/2; i++)
            addObject(new Planta1(),32*3+(i*posPlanta) ,48*2);

        for(int i=0; i < limRowPlants/2; i++)
            addObject(new Planta1(),32*15+(i*posPared) ,48*4);
            
            
        for(int i=0; i < limRowPlants/2; i++)
            addObject(new Planta1(),32*3+(i*posPlanta) ,48*4);

        for(int i=0; i < limRowPlants/2; i++)
            addObject(new Planta1(),32*3+(i*posPared) ,48*8);
                
        for(int i=0; i < limRowPlants/2; i++)
            addObject(new Planta1(),32*14+(i*posPlanta) ,48*10);
        
        for(int i=0; i < limRowPlants/2; i++)
            addObject(new Planta1(),32*14+(i*posPlanta) ,48*8);
        
        for(int i=0; i < limRowPlants/2; i++)
            addObject(new Planta1(),32*10+(i*posPlanta) ,48*6);

                    //crea laberinto columnas
        for(int i=0; i < limColPlants; i++)
            addObject(new Planta1(),48*2 ,32*3+(i*posPared));
         for(int i=0; i < limColPlants; i++)
             addObject(new Planta1(),48*9 ,32*3+(i*posPared));
         for(int i=0; i < limColPlants/2; i++)
            addObject(new Planta1(),48*6 ,32*6+(i*posPared));
            
         for(int i=0; i < limColPlants/2; i++)
            addObject(new Planta1(),48*4 ,32*6+(i*posPared));
         
            for(int i=0; i < limColPlants; i++)
                addObject(new Planta1(),48*14 ,32+(i*posPared));
                for(int i=0; i < limColPlants/2; i++)
                    addObject(new Planta1(),48*5 ,32*12+(i*posPared));

            
        addObject(new Fantasma(),58,58);
         addObject(new Globo(), 55, 96);
         addObject(new Barril(), 564, 528);
     
         addObject(new Barril(), 633, 241);
        addObject(new Fantasma(), 468, 335);
        addObject(new Globo(),332,421);
          addObject(new Globo(),140,231);
            addObject(new Globo(),241,348);

        addObject(new VidaExtra(),330,450);
        addObject(new Estrella(),460,550);
        addObject(new SuperBomba(),89,325);
        /*addObject(new VidaExtra(),x3,y3);
        addObject(new Escudo(),x4,y4);
        addObject(new Estrella(),x5,y5);
        */
        
        int ran=Greenfoot.getRandomNumber(3);
        int ran1=Greenfoot.getRandomNumber(3);
        int ran2=Greenfoot.getRandomNumber(3);
        
        
                switch(ran)
                {
                    case 1://800,600
                        addObject(new Llave(),750,500);
                        break;
                    case 2:
                        addObject(new Llave(), 550, 200);
                        break;
                    case 0:
                        addObject(new Llave(), 298, 87);
                        break;
                }
                
                switch(ran1)
                {
                    case 1:
                        addObject(new Llave(),110,80);
                        break;
                    case 2:
                        addObject(new Llave(), 360, 200);
                        break;
                    case 0:
                        addObject(new Llave(), 600, 122);
                        break;
                }
                
                switch(ran2)
                {
                    case 1:
                        addObject(new Llave(),109,556);
                        break;
                    case 2:
                        addObject(new Llave(), 484, 66);
                        break;
                    case 0:
                        addObject(new Llave(), 704, 233);
                        break;
                }
        
       //}
    }
     public void preparaNivel_22()
     {
        //if(scroll==4){
       removeObjects(getObjects(null));
       
       int x3=Greenfoot.getRandomNumber(798);
        int y3=Greenfoot.getRandomNumber(598);
        int x4=Greenfoot.getRandomNumber(600);
        int y4=Greenfoot.getRandomNumber(500);
        int x5=Greenfoot.getRandomNumber(500);
        int y5=Greenfoot.getRandomNumber(400);

       
        bobPosX = 60;//jugador.getImage().getWidth();//50
        bobPosY = 540;//getHeight()-jugador.getImage().getHeight();//540
        mensajeVidas= new Counter("    ");
        mensajeVidas.setValue(vidas);
        addObject(new VidaExtra(), 58,16);
        addObject(mensajeVidas, 78,16);
        
        mensajeLlaves= new Counter("    ");
        mensajeLlaves.setValue(llaves);
        addObject(new Llave(), 161,16);
        addObject(mensajeLlaves, 181,16);
        
         mensajeNivel= new Counter("Nivel ");
        mensajeNivel.setValue(nivel);
        addObject(mensajeNivel, 271,16);
        addObject(mensajeScore, 400,16);
  
        
        addObject(jugador, bobPosX,bobPosY);
        
        
        int ran=Greenfoot.getRandomNumber(3);
        int ran1=Greenfoot.getRandomNumber(3);
        int ran2=Greenfoot.getRandomNumber(3);
        
        
                switch(ran)//800,600
                {
                    case 1:
                        addObject(new Llave(),90,235);
                        break;
                    case 2:
                        addObject(new Llave(), 398, 68);
                        break;
                    case 0:
                        addObject(new Llave(), 700, 550);
                        break;
                }
                
                switch(ran1)
                {
                    case 1:
                        addObject(new Llave(),210,650);
                        break;
                    case 2:
                        addObject(new Llave(), 460, 350);
                        break;
                    case 0:
                        addObject(new Llave(), 190, 428);
                        break;
                }
                
                switch(ran2)
                {
                    case 1:
                        addObject(new Llave(),250,500);
                        break;
                    case 2:
                        addObject(new Llave(), 700, 105);
                        break;
                    case 0:
                        addObject(new Llave(), 405, 200);
                        break;
                }
        
       
        
        
        int limRow= getWidth()/32;
        int limCol=getHeight()/32;
         
        
        int limRowPlants=750/32;
        int limColPlants=500/32;
        int posX=42/2;
        int posY=32/2;
       //}
       for(int i=0; i < limRow; i++)
            addObject(new Pared(),16+(i*posPared) ,582);

        for(int i=0; i < limRow; i++)
            addObject(new Pared(),16+(i*posPared) ,16);

        for(int i=0; i < limCol; i++)
            addObject(new Pared(),784 ,16+(i*posPared));
            
            //crea renglones
        /*    
        for(int i=0; i < limRowPlants/2; i++)
            addObject(new Planta1(),32*10+(i*posPlanta) ,48*6);
         */
                    //crea laberinto columnas
        for(int i=0; i < limColPlants; i++)
            addObject(new Planta1(),48/2 ,32*3+(i*posPared));
        
        for(int i=0; i < limColPlants; i++)
            addObject(new Planta1(),48*2 ,32*3+(i*posPared));
            
        for(int i=0; i < limColPlants; i++)
            addObject(new Planta1(),48*3+48/2 ,32+(i*posPared));
        
        for(int i=0; i < limColPlants; i++)
            addObject(new Planta1(),48*5 ,32+(i*posPared));
            
        for(int i=0; i < limColPlants; i++)
            addObject(new Planta1(),48*6+48/2 ,32*3+(i*posPared));
        
        for(int i=0; i < limColPlants; i++)
            addObject(new Planta1(),48*8 ,32*3+(i*posPared));
       
        for(int i=0; i < limColPlants; i++)
            addObject(new Planta1(),48*9+48/2 ,32+(i*posPared));
        
        for(int i=0; i < limColPlants; i++)
            addObject(new Planta1(),48*11 ,32+(i*posPared));
       
            
        for(int i=0; i < limColPlants; i++)
            addObject(new Planta1(),48*12+48/2 ,32*3+(i*posPared));
        
        for(int i=0; i < limColPlants; i++)
            addObject(new Planta1(),48*14 ,32*3+(i*posPared));
       
        for(int i=0; i < limColPlants; i++)
            addObject(new Planta1(),48*15+48/2 ,32+(i*posPared));
        
            
            
        addObject(new Fantasma(),410,58);
         addObject(new Globo(), 134, 60);
         addObject(new Barril(), 564, 528);
         
         addObject(new Fantasma(),575,58);
         addObject(new Globo(), 275, 360);
        
         addObject(new Globo(), 421, 60);
         addObject(new Barril(), 155, 528);
     
         
        addObject(new VidaExtra(),330,450);
        addObject(new Estrella(),460,550);
        addObject(new SuperBomba(),89,325);
        addObject(new VidaExtra(),x3,y3);
        addObject(new Escudo(),x4,y4);
        addObject(new Estrella(),x5,y5);
        
            
            
        }
     public void preparaNivel3()
    {
       //musica.play();
        
        //if(scroll==4){
       removeObjects(getObjects(null));
    
        bobPosX = 52;//jugador.getImage().getWidth();//50
        bobPosY = 540;//getHeight()-jugador.getImage().getHeight();//540

        int llave1=Greenfoot.getRandomNumber(2);
        int llave2=Greenfoot.getRandomNumber(2);
        int llave3=Greenfoot.getRandomNumber(1);
        int llave4=Greenfoot.getRandomNumber(4);
        
        int x3=Greenfoot.getRandomNumber(798);
        int y3=Greenfoot.getRandomNumber(598);
        int x4=Greenfoot.getRandomNumber(600);
        int y4=Greenfoot.getRandomNumber(500);
        int x5=Greenfoot.getRandomNumber(500);
        int y5=Greenfoot.getRandomNumber(400);

        int limRow= getWidth()/32;
        int limCol=getHeight()/32;
         
        
        int limRowPlants=750/32;
        int limColPlants=500/32;
        int posX=42/2;
        int posY=32/2;
        addObject(jugador, bobPosX,bobPosY);
        
        
        mensajeVidas= new Counter("    ");
        mensajeVidas.setValue(vidas);
        addObject(new VidaExtra(), 58,16);
        addObject(mensajeVidas, 78,16);
        addObject(mensajeScore, 400,16);
  
        mensajeLlaves= new Counter("    ");
        mensajeLlaves.setValue(llaves);
        addObject(new Llave(), 161,16);
        addObject(mensajeLlaves, 181,16);
        
         mensajeNivel= new Counter("Nivel ");
        mensajeNivel.setValue(nivel);
        addObject(mensajeNivel, 271,16);
        
        
        switch(llave1)
        {
            case 0: addObject(new Llave(),367,245);
                    break;
            case 1: addObject(new Llave(),668,146);
                    break;
                    }
         switch(llave2)
        {
            case 0: addObject(new Llave(),470,541);
                    break;
            case 1: addObject(new Llave(),56,147);
                    break;
        }
         switch(llave3)
        {
            case 0: addObject(new Llave(),100,100);
                    break;
        }
      
      // addObject(new Llave(),367,245);
        setBackground("Nivel3.png");
       
        
         for(int i=0; i < limRow; i++)
            addObject(new Pared(),16+(i*posPared) ,582);

        for(int i=0; i < limRow; i++)
            addObject(new Pared(),16+(i*posPared) ,16);

        for(int i=0; i < limCol; i++)
            addObject(new Pared(),16 ,16+(i*posPared));
       
            for(int i=0; i < limCol; i++)
            addObject(new Pared(),784 ,16+(i*posPared));
       addObject(new Snake(), 300,300); 
       addObject(new Snake(), 600,100); 
       addObject(new Snake(), 400,200); 
       addObject(new Snake(), 700,300); 
       
       addObject(new Barril(), 784,50); 
       addObject(new Barril(), 500,100); 
       addObject(new Barril(), 400,200); 
       addObject(new Barril(), 700,300); 
       
       
       addObject(new Fantasma(), 300,300); 
       addObject(new Fantasma(), 600,100); 
       addObject(new Globo(), 400,200); 
       addObject(new Globo(), 700,300); 
       
       
        addObject(new Planta(),68 ,183);
        addObject(new Planta(),107 ,139);
        addObject(new Planta(),68,102);
       
       
        addObject(new Planta(),368 ,283);
        addObject(new Planta(),407 ,239);
        addObject(new Planta(),368,202);
        addObject(new Planta(),325,239);
        
        
       
        addObject(new Planta(),507 ,539);
        addObject(new Planta(),468,502);
        addObject(new Planta(),425,539);
        
        addObject(new Planta(),668 ,183);
        addObject(new Planta(),707 ,139);
        addObject(new Planta(),668,102);
        addObject(new Planta(),625,139);
       
        
        
       addObject(new SuperBomba(),89,325);
        addObject(new VidaExtra(),x3,y3);
        addObject(new Escudo(),x4,y4);
        addObject(new Estrella(),x5,y5);
        
       
       //}
    }
    
    
    
}
